package com.yuan.order.dataobject;

import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.*;
import java.util.Date;

/**
 * 商品类目
 *
 * @Author yuan
 * @Date 2021/1/22 15:11
 */
@Entity
@Data
@NoArgsConstructor()
/**@DynamicInsert属性:设置为true表示insert对象的时候,生成动态的insert语句, 如果这个字段的值是null就不会加入到insert语句当中.默认true。
比如希望数据库插入日期或时间戳字段时，在对象字段为空的情况下，表字段能自动填写当前的sysdate。
这种情况就可以使用@DynamicInsert()*/
@DynamicInsert()
/**@DynamicUpdate设置为true表示update对象的时候,生成动态的update语句, 如果这个字段的值是null就不会被加入到update语句中, 默认true。
比如只想更新某个属性，但是却把整个对象的属性都更新了，这并不是我们希望的结果，
我们希望的结果是：我更改了哪些字段，只要更新我修改的字段就够了,这种情况就可以使用@DynamicUpdate()*/
@DynamicUpdate
public class ProductCategory {
    /**
     * 类目id
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer categoryId;
    /**
     * 类目名字
     */
    private String categoryName;
    /**
     * 类目编号
     */
    private Integer categoryType;
    /**
     * 创建时间
     */
    @Column(updatable = false)
    private Date createTime;
    /**
     * 更新时间
     */
    private Date updateTime;

    public ProductCategory(String categoryName, Integer categoryType) {
        this.categoryName = categoryName;
        this.categoryType = categoryType;
    }
}
